﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Intelsi.Entity;
using Intelsi.BusinessLogic;
using Microsoft.Practices.Unity;

namespace Intelsi.WB
{
    public partial class FrmProducto : System.Web.UI.Page
    {

        [Dependency]
        public ICategoriaBL categoriaBL { get; set; }


        [Dependency]
        public IProductoBL productoBL { get; set; }

        [Dependency]
        public IMarcaBL marcaBL { get; set; }


        [Dependency]
        public ITrabajadorBL trabajadorBL { get; set; }


        public Entity.Producto ProductoCurrent { get; set; }

        protected void Page_Load(object sender, EventArgs e)
        {

            string userName = HttpContext.Current.User.Identity.Name;
            var trabajador = trabajadorBL.GetFromTrabajadorByCorreoCorporativo(userName);

            string cargo = trabajador.Cargo;
           


            if (!Page.IsPostBack)
            {
                var acc = Request.QueryString["acc"];
                var idPro = Request.QueryString["IdProd"];

                if (string.Empty != null)
                {
                    if (acc == "nuevo" && (cargo == "Almacenero" || cargo == "Gerente"))
                {
                    Herramientas();
                    hfProducto.Value = "0";
                   // BindData();
                    BtnGuardar.Text = "Guardar";
                }


                    else if (acc == "editar" && (cargo == "Almacenero" || cargo == "Gerente"))
                    {
                        BtnGuardar.Text = "Guardar Cambios";

                       Producto porducto;
                        porducto= productoBL.GetFromProductoByIdProducto(Int32.Parse(idPro));
                        var rpta = porducto.IdCategoria;
                        ProductoCurrent = porducto;

                        hfProducto.Value = porducto.IdProducto.ToString();
                        comboCategoria.SelectedValue = porducto.IdCategoria.ToString();


                        if (rpta == 1)
                        {
                            Herramientas();
                        }

                        else if (rpta == 2)
                        {
                            Epp();

                        }

                        else if (rpta == 3)
                        {
                            Materiales();

                        }

                        else if (rpta == 4)
                        {
                            Equipos();

                        }


                        txtDescripcionProdu.Text = porducto.Nombre;
                        TxtCodigo.Text = porducto.Codigo;

                        hfMarca.Value = porducto.IdMarca.ToString();
                        TxtMarca.Text = porducto.Marca.Nombre;

                        hfproveedor.Value = porducto.IdProveedor.ToString();
                        TxtProvedor.Text = porducto.Proveedor.RazonSocial;

                        txtColor.Text = porducto.Codigo;
                        TxtFechaVencimiento.Text = porducto.FechaVencimiento.ToString();
                        TxtModelo.Text = porducto.Modelo;
                        txtPrecio.Text = porducto.PrecioCompra.ToString();
                        txtStock.Text = porducto.Stock.ToString();
                        txtStockmin.Text = porducto.StockMin.ToString();
                        txtTalla.Text = porducto.Talla;
                        TxtUnidadMedida.Text = porducto.UniMedida;
                        txtVoltaje.Text = porducto.Voltaje.ToString();
                        comboEstado.SelectedValue = porducto.Estado;
                        foto.ImageUrl = "GetFotoProducto.aspx?size=280&id=" + idPro;

                        this.DataBind();


                    }

                    else
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(),
                               "mensaje",
                                  "<script type=\"text/javascript\">" +
                                     "alert(\"Usted No tiene Los Permiso Nesesarios Para esto\");" +
                                     "document.location=('DefaultProducto.aspx');" +
                                       "</script>", false);
                    }
                }
            }
            
        }

        protected void ObjCategoria_ObjectCreating(object sender, ObjectDataSourceEventArgs e)
        {
            e.ObjectInstance = categoriaBL;
        }

        protected void comboCategoria_SelectedIndexChanged(object sender, EventArgs e)
        {
            var valor = comboCategoria.SelectedValue;

            switch (valor)
            { 
                case "1":

                    Herramientas();


                    break;



                case "2":


                    Epp();


                //TxtCodigo.Text = "hola soy EPP";
                    break;



                case "3":

                    Materiales();
                    break;


                case "4":

                    Equipos();

                    //TxtCodigo.Text = "hola soy Material";
                    break;


                default:
                    
                    break;
            
            }
        }

        
        private  Producto BindData()
        {
            Producto producto = new Producto()
            {
                IdProducto = Int32.Parse(hfProducto.Value),
                Codigo = TxtCodigo.Text != ""? TxtCodigo.Text:"",
                Nombre = txtDescripcionProdu.Text,
                IdMarca = hfMarca.Value != ""? Int32.Parse(hfMarca.Value):1,
                UniMedida = TxtUnidadMedida.Text !=""? TxtUnidadMedida.Text:"",
                Estado =comboCategoria.SelectedValue !=""?  comboEstado.SelectedValue:"",
                IdCategoria = comboCategoria.SelectedValue !=""? Int32.Parse(comboCategoria.SelectedValue):1,
                Stock = txtStock.Text !=""? Decimal.Parse(txtStock.Text):0,
                StockMin = txtStockmin.Text !=""? Decimal.Parse(txtStockmin.Text):0,
                Modelo = TxtModelo.Text !=""? TxtModelo.Text:"",
                Voltaje = txtVoltaje.Text !=""? Decimal.Parse(txtVoltaje.Text):0,
                Talla = txtTalla.Text !=""? txtTalla.Text:"",
                Color =txtColor.Text !=""? txtColor.Text:"",
               FechaVencimiento = TxtFechaVencimiento.Text !=""? DateTime.Parse(TxtFechaVencimiento.Text):DateTime.Now,
               PrecioCompra = txtPrecio.Text !=""? float.Parse(txtPrecio.Text):0,
               IdProveedor = hfproveedor.Value !=""? Int32.Parse(hfproveedor.Value):3
              // Foto = fuFoto.FileBytes
                
            };
            
            if (fuFoto.HasFile)
            {
                producto.Foto = fuFoto.FileBytes;
            }

            return producto;
            
        }

        protected void BtnGuardar_Click(object sender, EventArgs e)
        {
            //var producto = ProductoCurrent;

            Producto producto = BindData();

            var estado = BtnGuardar.Text;

            if (estado == "Guardar")
            {
                if (txtDescripcionProdu.Text == "")
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(),
                         "mensaje",
                            "<script type=\"text/javascript\">" +
                               "alert(\"Debe introducir La Descripcion del Producto\");" +
                                 "</script>", false);
                }
                else
                {
                    productoBL.RegistarProducto(producto);


                    Page.ClientScript.RegisterStartupScript(this.GetType(),
                         "mensaje",
                            "<script type=\"text/javascript\">" +
                               "alert(\"Se ha Registado Exitosamente\");" +
                                  "document.location=('frmListarProducto.aspx');" +
                                    "</script>", false);


                   // Response.Redirect("frmListarProducto.aspx");
                }
            }
            else if (estado == "Guardar Cambios")
               {

                    productoBL.EditarProducto(producto);


                    Page.ClientScript.RegisterStartupScript(this.GetType(),
                             "mensaje",
                                "<script type=\"text/javascript\">" +
                                   "alert(\"Se ha Actualizado  Exitosamente\");" +
                                   "document.location=('frmListarProducto.aspx');" +
                                     "</script>", false);

                   // Response.Redirect("frmListarProducto.aspx");
                }
        }








        private void Herramientas()
        {
            labfechavenci.Visible = false;
            TxtFechaVencimiento.Visible = false;

            // txtnumeric.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");

            txtPrecio.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStock.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStockmin.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");

            FaltaDescripcion.Visible = false;
            lacolor.Visible = false;
            txtColor.Visible = false;

            lafoto.Visible = false;
            foto.Visible = false;
            fuFoto.Visible = false;

            latalla.Visible = false;
            txtTalla.Visible = false;

            laVoltaje.Visible = false;
            txtVoltaje.Visible = false;

            lamodelo.Visible = false;
            TxtModelo.Visible = false;
        }

        private void Equipos()
        {
            labfechavenci.Visible = false;
            TxtFechaVencimiento.Visible = false;

            txtPrecio.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStock.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStockmin.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");

            FaltaDescripcion.Visible = false;
            lacolor.Visible = false;
            txtColor.Visible = false;

            lafoto.Visible = false;
            foto.Visible = false;
            fuFoto.Visible = false;

            latalla.Visible = false;
            txtTalla.Visible = false;

            laVoltaje.Visible = true;
            txtVoltaje.Visible = true;

            lamodelo.Visible = true;
            TxtModelo.Visible = true;
        }

        private void Materiales()
        {
            labfechavenci.Visible = false;
            TxtFechaVencimiento.Visible = false;
           
            txtPrecio.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStock.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStockmin.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");

            FaltaDescripcion.Visible = false;
            lacolor.Visible = false;
            txtColor.Visible = false;

            lafoto.Visible = true;
            foto.Visible = true;
            fuFoto.Visible = true;

            latalla.Visible = false;
            txtTalla.Visible = false;

            laVoltaje.Visible = false;
            txtVoltaje.Visible = false;


            lamodelo.Visible = false;
            TxtModelo.Visible = false;

            //.Text = "hola soy Equipo";
        }

        private void Epp()
        {
            labfechavenci.Visible = true;
            TxtFechaVencimiento.Visible = true;

            txtPrecio.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStock.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");
            txtStockmin.Attributes.Add("onkeypress", "javascript:return ValidNum(event);");

            FaltaDescripcion.Visible = false;
            lacolor.Visible = true;
            txtColor.Visible = true;

            lafoto.Visible = false;
            foto.Visible = false;
            fuFoto.Visible = false;

            latalla.Visible = true;
            txtTalla.Visible = true;

            laVoltaje.Visible = false;
            txtVoltaje.Visible = false;

            lamodelo.Visible = false;
            TxtModelo.Visible = false;
        }

       

        protected void BtnGuargarMarca_Click(object sender, EventArgs e)
        
        {
            //ModalPopupExtender1.Show();
            Marca marca = new Marca()
            {
                Nombre = TxtNuevaMarca.Text,
                Comentario =txtComentariomarca.Text
            };

            marcaBL.RegistarMarca(marca);
            ModalPopupExtender1.Hide();


            TxtNuevaMarca.Text = "";
            txtComentariomarca.Text = "";

        }
                
        
        protected void BtnRegMarca_Click(object sender, EventArgs e)
        {
            ModalPopupExtender1.Show();
            
        
        }


    }
}